前幾天我們分別講了什麼是Event Broker、Message Queue,讓大家了解Event Broker和Message Queue是兩種相似但又不相同的design pattern。
分別用在routing event和傳遞訊息,儘管他們的優點以及特性有些相似,但仔細研究後會發現他們在功能面和適用的情境上有蠻大的不同。
今天我們開一篇來比較彼此的不同點在哪((好像又歪樓了 抓頭
好了~讓我們開始吧!
Event Broker為一種用於管理和routing event的design pattern,適用在event driven architecture。
前面的Event Broker篇有提過它的適用場景:
Event Broker的整體流程包含了event的routing、distribution等多個重要的步驟,能保證EDA有效率的運作,提升系統的靈活度,同時也能確保資料的同步,確保資料的一致性。
Message Queue主要專注在訊息的儲存和傳遞的一種design pattern。
昨天有提到MQ的適用情景:
我們為各位整理出兩個設計模式不同之處的表格,給大家作為參考。
特性 | Event Broker | Message Queue |
---|---|---|
目的 | event的管理和分送 | 訊息的傳遞 |
event的儲存 | 一般不支援event持久化 | 支援訊息持久化 |
傳遞方式 | event的publish/subscribe | 訊息的傳遞 |
延遲性 | 延遲性低 | 延遲性較高 |
擴展性 | 擴展性高 | 擴展性高 |
event的處理 | 支援event給多個subscriber處理 | 單一subscriber處理 |
event的順序 | 不保證event的處理順序 | 保證訊息的處理順序 |
適用場景 | EDA, Microservices | Asynchronous處理 |
典型技術 | Kafka, NATS | RabbitMQ, Amazon SQS |
Event Broker和Message Queue各自有優缺點以及適用的場景,相比於Message Queue適合可靠訊息的傳遞,Event Broker更適合在即時的處理和event的管理上。根據使用者的需求討論適合的design pattern是團隊需要好好討論以及衡量的地方。
本篇用表格讓大家明確的了解兩者之間的區別~
明天開始進入NATS篇~
好了~今天就到這邊!